﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

// TODO replace file, rank, side and piecetype with ints
namespace HexChessBoard
{
    /// <summary>
    /// File is defined alphabetically and comprises the vertical columns
    /// of the hexagonal chess board. There are 11 files, A-L, not including "J."
    /// </summary>
    public enum File : short
    {
        A,
        B,
        C,
        D,
        E,
        F,
        G,
        H,
        I,
        K,
        L,
    }

    /// <summary>
    /// Rank is defined numerically and comprises the diagonal "V" rows
    /// of the hexagonal chess board. There are 11 ranks, 1-11.
    /// Each rank has a different possible number of files in it:
    /// 1-6(11: A-L), 7(9: B-K), 8(7: C-I), 9(5: D-H), 10(3: E-G), 11(1: F).
    /// </summary>
    public enum Rank : short
    {
        One,
        Two,
        Three,
        Four,
        Five,
        Six,
        Seven,
        Eight,
        Nine,
        Ten,
        Eleven,
    }

    /// <summary>
    /// The available chess pieces for a board, including "None" for an empty tile.
    /// </summary>
    public enum PieceType : short
    {
        None = 0,
        Pawn = 100,
        Rook = 350,
        Knight = 325,
        Bishop = 500,
        Queen = 975,
        King = short.MaxValue,
    }

    /// <summary>
    /// The side of the piece.
    /// </summary>
    public enum PieceColor : short
    {
        Black,
        White,
    }

    /// <summary>
    /// Which color the tile piece should be.
    /// </summary>
    public enum TileColor : short
    {
        Dark,
        Grey,
        Light,
    }

    /// <summary>
    /// The possible variations of playing the game, with different layouts and rules.
    /// </summary>
    public enum GameVariant : short
    {
        Glinsky,
        McCooey,
        Shafran,
    }

    public enum Difficulty : short
    {
        Easy = 1,
        Medium = 2,
        Hard = 3,
    }
}